﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SIGEB.Prototipo.control;

namespace SIGEB.Prototipo.Vista
{
    partial class frm_Login : frm_Base
    {
        #region CONSTRUCTORES

        public frm_Login()
        {
            InitializeComponent();
        }

        public frm_Login(Control.controlPrincipal cp):base(cp)
        {
            this.cp = cp;
            InitializeComponent();
            asignarUI(this.Controls);
            txt_pass.Font = new Font(FontFamily.GenericSansSerif, 12f);
            inicializar();
        }

        #endregion

        #region "métodos"

        private void inicializar()
        {
            completed = false;
            txt_usr.Text = string.Empty;
            txt_pass.Text = string.Empty;
            borrarError(txt_usr);
            borrarError(txt_pass);
        }

        public override void hacerVisible(object[] arg)
        {
            //base.hacerVisible(arg);
            inicializar();
        }

        protected override void CerrarVentana(object sender, FormClosingEventArgs e)
        {
            if (!completed)
            {
                if (confirmarCierre())
                {
                    Application.ExitThread();
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }

        private bool datosLoginValidos()
        {
            if (!Validacion.LongitudCadenaValida(txt_usr.Text, true, 20))
            {
                setError(txt_usr, "Debe ingresar un nombre de usuario.");
            }
            else
            {
                borrarError(txt_usr);
            }
            if (!Validacion.LongitudCadenaValida(txt_pass.Text, true, 50))
            {
                setError(txt_pass, "Debe ingresar la contraseña asociada al nombre de usuario.");
            }
            else
            {
                borrarError(txt_pass);
            }
            if (erp_error.GetError(txt_usr).Equals(string.Empty) && erp_error.GetError(txt_pass).Equals(string.Empty))
            {
                if (cp.ctrlUsuario.MatchPassUser(txt_usr.Text, txt_pass.Text))
                {
                    return true;
                }
                else
                {
                    mostrarInfo("El nombre de usuario y/o la contraseña, son inválidos.");
                }
            }
            return false;
            //return (String.IsNullOrEmpty(txt_pass.Text) && String.IsNullOrEmpty(txt_usr.Text)) || cp.ctrlUsuario.MatchPassUser(txt_usr.Text, txt_pass.Text);
        }

        private void asignarNuevaCont()
        {
            frm_cambioContrasena cambio = new frm_cambioContrasena(cp, txt_usr.Text);
            cambio.ShowDialog();
        }

        #endregion

        #region eventos

        private void btn_ingresar_Click(object sender, EventArgs e)
        {
            if (datosLoginValidos())
            {
                cp.setNuevoUsuario(txt_usr.Text);
                completed = true;
                if (txt_pass.Text.Equals("biblioteca"))
                {
                    if (confirmarOperacion("Tal parece que es un usuario nuevo, o su contraseña ha sido reestablecida.\nSe requiere que ingrese una contraseña diferente a la predeterminada.\nEn caso de no realizar el cambio en este momento,\naparecerá este diálogo la próxima vez que ingrese al sistema."))
                    {
                        asignarNuevaCont();
                    }
                }
                Close();
            }
        }

        #endregion

        #region atributos

        private bool completed = false;

        #endregion
    }
}
